package structs

import (
	"math"
)

// JSONResponse 请求响应的结构
type JSONResponse struct {
	Code    int         `json:"code"`
	Success bool        `json:"success"`
	Message string      `json:"message"`
	Data    interface{} `json:"data"`
}

// ShandianwanJSONResponse 请求响应的结构
type ShandianwanJSONResponse struct {
	Code int    `json:"code"`
	Msg  string `json:"msg"`
}

// PageData 列表数据
type PageData struct {
	List        interface{} `json:"list"`
	NextStart   int         `json:"nextStart"`
	HasMore     bool        `json:"hasMore"`
	Total       interface{} `json:"totalNum"`
	PageSize    int         `json:"pageSize"`
	CurrentPage int         `json:"currentPage"`
	Status      string      `json:"status,omitempty"`
}

// NewPageData 获取分页数据
// func NewPageData(list []interface{}, start int, limit int, total interface{}) PageData {

// 	nextStart := start + limit
// 	hasMore := false
// 	if len(list) == limit {
// 		hasMore = true
// 	}
// 	if len(list) > 0 {
// 		hasMore = true
// 	}
// 	prevStart := start - limit
// 	if prevStart < 0 {
// 		prevStart = 0
// 	}

// 	vlist := make([]interface{}, 0)
// 	if len(list) == 0 {

// 	} else {
// 		vlist = list
// 	}

// 	return PageData{
// 		List:      vlist,
// 		NextStart: nextStart,
// 		HasMore:   hasMore,
// 		Total:     total,
// 		// 新参数
// 		PageSize: limit,
// 	}
// }

// NewPageData 获取分页数据
func NewPageData(list []interface{}, pageSize int, start int, total int) PageData {
	hasMore := false
	var countPage int64
	countPage = int64(math.Ceil(float64(total) / float64(pageSize)))
	if countPage > int64(start) {
		hasMore = true
	}
	vlist := make([]interface{}, 0)
	if len(list) == 0 {

	} else {
		vlist = list
	}

	return PageData{
		List:        vlist,
		NextStart:   start + 1,
		HasMore:     hasMore,
		Total:       total,
		PageSize:    pageSize,
		CurrentPage: start,
	}
}
